//
// Created by denglibin on 19-10-4.
//

/**
 * unlink命令用于系统调用函数unlink去删除指定的文件。和rm命令作用一样，都是删除文件
 * 用link和unlink可以重命名文件（link创建，unlink删除原来的）
 */

#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <errno.h>
#include <string.h>

static int test_unlink(){
    char * linkPath = "/home/denglibin/image/123_link.jpg";
    int ret = unlink(linkPath);
    if(ret == -1){
        perror("unlink error:");
        return -1;
    }
    return  0;
}

static void test_unlink_write(){
    char * filePath = "/home/denglibin/123.txt";
    char * s = "hello";
    int fd = open(filePath, O_CREAT | O_WRONLY | O_TRUNC, 0644);
    if(fd == -1){
        perror("open error:");
        return;
    }
    unlink(filePath); // unlink后依然可以write（unlink只是让文件具备释放的条件，操作系统不会马上释放）
    ssize_t ret = write(fd, s, strlen(s));
    if(ret == -1){
        perror("write error:");
        close(fd);
        return;
    }
    close(fd);
}
static int main_(void){
    //test_unlink();
    test_unlink_write();
    return 0;
}